package com.rzl.expense.expense.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.rzl.expense.common.annotation.Excel;
import com.rzl.expense.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 电费合同对象 ele_contract
 * 
 * @author expense
 * @date 2025-03-06
 */
public class EleContract extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 电费合同Id */
    private String elecontractId;

    /** 主合同Id */
    @Excel(name = "主合同Id")
    private String contractId;

    /** 供应商Id */
    @Excel(name = "供应商Id")
    private String supplierId;

    /** 缴费周期（一个月_1", "二个月_2", "三个月_3", "半年_4", "一年_5", "两年_6", "一次性_7", "四个月_8", "五个月_9", "七个月_10", "八个月_11", "九个月_12", "十个月_13", "十一个月_14", "三年_15", "四年_16", "五年_17", "六年_18", "七年_19", "八年_20", "九年_21", "十年_22 */
   private String paymentperiodId;

    /** 所属省市 */
    @Excel(name = "所属省市")
    private String prvId;

    /** 关联合同流水号 */
    @Excel(name = "关联合同流水号")
    private String contractsysId;

    /** 单价类型 0：非平峰谷单价 1：平峰谷单价 */
    @Excel(name = "单价类型 0：非平峰谷单价 1：平峰谷单价")
    private Long priceType;

    /** 电费单价 */
    @Excel(name = "电费单价")
    private String elecontractPrice;

    /** 单价是否含税 0：否  1：是 */
    @Excel(name = "单价是否含税 0：否  1：是")
    private Long includePriceTax;

    /** 平单价 */
    @Excel(name = "平单价")
    private BigDecimal flatPrice;

    /** 峰单价 */
    @Excel(name = "峰单价")
    private BigDecimal peakPrice;

    /** 谷单价 */
    @Excel(name = "谷单价")
    private BigDecimal valleyPrice;

    /** 尖单价 */
    @Excel(name = "尖单价")
    private BigDecimal topPrice;

    /** 供电类型--来自于数据字典 1:直供电 2:转供电 3:市电 4:太阳能 */
    @Excel(name = "供电类型--来自于数据字典 1:直供电 2:转供电 3:市电 4:太阳能")
    private Long supplyMethod;

    /** 购电方式 1：预付费 0：后付费 */
    @Excel(name = "购电方式 1：预付费 0：后付费")
    private Long buyMethod;

    /** 支付方式--来自于数据字典 */
    @Excel(name = "支付方式--来自于数据字典")
    private Long paymentMethod;

    /** 是否含税 0：否  1：是 */
    @Excel(name = "是否含税 0：否  1：是")
    private Long includeTax;

    /** 实际电费税率（单位：%） */
    @Excel(name = "实际电费税率", readConverterExp = "单=位：%")
    private BigDecimal taxRate;

    /** 是否包干 0：否  1：是 */
    @Excel(name = "是否包干 0：否  1：是")
    private Long isIncludeAll;

    /** 支付单价周期 */
    @Excel(name = "支付单价周期")
    private Long paySign;

    /** 支付单价价格 */
    @Excel(name = "支付单价价格")
    private BigDecimal paySignAccount;

    /** 包干价款 */
    @Excel(name = "包干价款")
    private BigDecimal contractMoney;

    /** 包干税款 */
    @Excel(name = "包干税款")
    private BigDecimal contractTax;

    /** 包干总金额 */
    @Excel(name = "包干总金额")
    private BigDecimal contractTotalAmount;

    /** 包干年金额 */
    @Excel(name = "包干年金额")
    private BigDecimal contractYearAmount;

    /** 是否独立挂表  0：否  1：是 */
    @Excel(name = "是否独立挂表  0：否  1：是")
    private Long independentMeter;

    /** 移动分摊比例 */
    @Excel(name = "移动分摊比例")
    private BigDecimal cmccRatio;

    /** 联通分摊比例 */
    @Excel(name = "联通分摊比例")
    private BigDecimal unicomRatio;

    /** 电信分摊比例 */
    @Excel(name = "电信分摊比例")
    private BigDecimal telcomRatio;

    /** 是否有电损 0：否  1：是 */
    @Excel(name = "是否有电损 0：否  1：是")
    private Long includeLoss;

    /** 电损计算方式 */
    @Excel(name = "电损计算方式")
    private Long lossType;

    /** 缴费负责人 */
    @Excel(name = "缴费负责人")
    private String paymentUser;

    /** 缴费负责人联系电话 */
    @Excel(name = "缴费负责人联系电话")
    private String paymentTelphone;

    /** 电费合同备注 */
    @Excel(name = "电费合同备注")
    private String elecontractNote;

    /** 允许补录字段 */
    @Excel(name = "允许补录字段")
    private String tag;

    /** 录入人id */
    @Excel(name = "录入人id")
    private String enterUserId;

    /** 错误数据更正编号 */
    @Excel(name = "错误数据更正编号")
    private String correctId;

    /** 错误数据更正时间  */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "错误数据更正时间 ", width = 30, dateFormat = "yyyy-MM-dd")
    private Date correctTime;

    /** 创建人Id */
    @Excel(name = "创建人Id")
    private String createUserId;

    /** 直供电用电分类：1、一般工商业用电，2、大工业用电，3、市场化交易/直购用电，4、5G优惠政策用电，5、居民用电 */
    @Excel(name = "直供电用电分类：1、一般工商业用电，2、大工业用电，3、市场化交易/直购用电，4、5G优惠政策用电，5、居民用电")
    private Integer electricityType;

    /** 多供应商是否被切换过 */
    @Excel(name = "多供应商是否被切换过")
    private Integer isSupplierChange;

    /** 是否转改直中0否1是 */
    @Excel(name = "是否转改直中0否1是")
    private Long transferToStraight;

    /** 最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastModifyTime;

    /** 稽核单单价取值模式,0采用合同或固化自身单价1采用区域单价 */
    @Excel(name = "稽核单单价取值模式,0采用合同或固化自身单价1采用区域单价")
    private Integer priceModel;

    /** 电损计算方式为按度数、金额时具体的数值 */
    @Excel(name = "电损计算方式为按度数、金额时具体的数值")
    private BigDecimal lossTypeValue;

    /** 电损计算方式为按金额时，1： 元/月、2：元/年，电损计算方式为按度数时，3： % */
    @Excel(name = "电损计算方式为按金额时，1： 元/月、2：元/年，电损计算方式为按度数时，3： %")
    private Integer lossTypeUnit;

    /** 合同已报账金额 */
    @Excel(name = "合同已报账金额")
    private BigDecimal totalClaimAmount;

    /** 合同的最后报账时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同的最后报账时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastClaimDate;

    /** 合同关联的报账单在资金系统已完成付
款金额 */
    @Excel(name = "合同关联的报账单在资金系统已完成付款金额")
    private BigDecimal totalPayAmount;

    /** 本合同最后付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "本合同最后付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastPaymentDate;

    /** 合同总金额 */
    @Excel(name = "合同总金额")
    private BigDecimal totalContractAmount;

    public void setElecontractId(String elecontractId) 
    {
        this.elecontractId = elecontractId;
    }

    public String getElecontractId() 
    {
        return elecontractId;
    }
    public void setContractId(String contractId) 
    {
        this.contractId = contractId;
    }

    public String getContractId() 
    {
        return contractId;
    }
    public void setSupplierId(String supplierId) 
    {
        this.supplierId = supplierId;
    }

    public String getSupplierId() 
    {
        return supplierId;
    }
    public void setPaymentperiodId(String paymentperiodId) 
    {
        this.paymentperiodId = paymentperiodId;
    }

    public String getPaymentperiodId() 
    {
        return paymentperiodId;
    }
    public void setPrvId(String prvId) 
    {
        this.prvId = prvId;
    }

    public String getPrvId() 
    {
        return prvId;
    }
    public void setContractsysId(String contractsysId) 
    {
        this.contractsysId = contractsysId;
    }

    public String getContractsysId() 
    {
        return contractsysId;
    }
    public void setPriceType(Long priceType) 
    {
        this.priceType = priceType;
    }

    public Long getPriceType() 
    {
        return priceType;
    }
    public void setElecontractPrice(String elecontractPrice) 
    {
        this.elecontractPrice = elecontractPrice;
    }

    public String getElecontractPrice() 
    {
        return elecontractPrice;
    }
    public void setIncludePriceTax(Long includePriceTax) 
    {
        this.includePriceTax = includePriceTax;
    }

    public Long getIncludePriceTax() 
    {
        return includePriceTax;
    }
    public void setFlatPrice(BigDecimal flatPrice) 
    {
        this.flatPrice = flatPrice;
    }

    public BigDecimal getFlatPrice() 
    {
        return flatPrice;
    }
    public void setPeakPrice(BigDecimal peakPrice) 
    {
        this.peakPrice = peakPrice;
    }

    public BigDecimal getPeakPrice() 
    {
        return peakPrice;
    }
    public void setValleyPrice(BigDecimal valleyPrice) 
    {
        this.valleyPrice = valleyPrice;
    }

    public BigDecimal getValleyPrice() 
    {
        return valleyPrice;
    }
    public void setTopPrice(BigDecimal topPrice) 
    {
        this.topPrice = topPrice;
    }

    public BigDecimal getTopPrice() 
    {
        return topPrice;
    }
    public void setSupplyMethod(Long supplyMethod) 
    {
        this.supplyMethod = supplyMethod;
    }

    public Long getSupplyMethod() 
    {
        return supplyMethod;
    }
    public void setBuyMethod(Long buyMethod) 
    {
        this.buyMethod = buyMethod;
    }

    public Long getBuyMethod() 
    {
        return buyMethod;
    }
    public void setPaymentMethod(Long paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public Long getPaymentMethod() 
    {
        return paymentMethod;
    }
    public void setIncludeTax(Long includeTax) 
    {
        this.includeTax = includeTax;
    }

    public Long getIncludeTax() 
    {
        return includeTax;
    }
    public void setTaxRate(BigDecimal taxRate) 
    {
        this.taxRate = taxRate;
    }

    public BigDecimal getTaxRate() 
    {
        return taxRate;
    }
    public void setIsIncludeAll(Long isIncludeAll) 
    {
        this.isIncludeAll = isIncludeAll;
    }

    public Long getIsIncludeAll() 
    {
        return isIncludeAll;
    }
    public void setPaySign(Long paySign) 
    {
        this.paySign = paySign;
    }

    public Long getPaySign() 
    {
        return paySign;
    }
    public void setPaySignAccount(BigDecimal paySignAccount) 
    {
        this.paySignAccount = paySignAccount;
    }

    public BigDecimal getPaySignAccount() 
    {
        return paySignAccount;
    }
    public void setContractMoney(BigDecimal contractMoney) 
    {
        this.contractMoney = contractMoney;
    }

    public BigDecimal getContractMoney() 
    {
        return contractMoney;
    }
    public void setContractTax(BigDecimal contractTax) 
    {
        this.contractTax = contractTax;
    }

    public BigDecimal getContractTax() 
    {
        return contractTax;
    }
    public void setContractTotalAmount(BigDecimal contractTotalAmount) 
    {
        this.contractTotalAmount = contractTotalAmount;
    }

    public BigDecimal getContractTotalAmount() 
    {
        return contractTotalAmount;
    }
    public void setContractYearAmount(BigDecimal contractYearAmount) 
    {
        this.contractYearAmount = contractYearAmount;
    }

    public BigDecimal getContractYearAmount() 
    {
        return contractYearAmount;
    }
    public void setIndependentMeter(Long independentMeter) 
    {
        this.independentMeter = independentMeter;
    }

    public Long getIndependentMeter() 
    {
        return independentMeter;
    }
    public void setCmccRatio(BigDecimal cmccRatio) 
    {
        this.cmccRatio = cmccRatio;
    }

    public BigDecimal getCmccRatio() 
    {
        return cmccRatio;
    }
    public void setUnicomRatio(BigDecimal unicomRatio) 
    {
        this.unicomRatio = unicomRatio;
    }

    public BigDecimal getUnicomRatio() 
    {
        return unicomRatio;
    }
    public void setTelcomRatio(BigDecimal telcomRatio) 
    {
        this.telcomRatio = telcomRatio;
    }

    public BigDecimal getTelcomRatio() 
    {
        return telcomRatio;
    }
    public void setIncludeLoss(Long includeLoss) 
    {
        this.includeLoss = includeLoss;
    }

    public Long getIncludeLoss() 
    {
        return includeLoss;
    }
    public void setLossType(Long lossType) 
    {
        this.lossType = lossType;
    }

    public Long getLossType() 
    {
        return lossType;
    }
    public void setPaymentUser(String paymentUser) 
    {
        this.paymentUser = paymentUser;
    }

    public String getPaymentUser() 
    {
        return paymentUser;
    }
    public void setPaymentTelphone(String paymentTelphone) 
    {
        this.paymentTelphone = paymentTelphone;
    }

    public String getPaymentTelphone() 
    {
        return paymentTelphone;
    }
    public void setElecontractNote(String elecontractNote) 
    {
        this.elecontractNote = elecontractNote;
    }

    public String getElecontractNote() 
    {
        return elecontractNote;
    }
    public void setTag(String tag) 
    {
        this.tag = tag;
    }

    public String getTag() 
    {
        return tag;
    }
    public void setEnterUserId(String enterUserId) 
    {
        this.enterUserId = enterUserId;
    }

    public String getEnterUserId() 
    {
        return enterUserId;
    }
    public void setCorrectId(String correctId) 
    {
        this.correctId = correctId;
    }

    public String getCorrectId() 
    {
        return correctId;
    }
    public void setCorrectTime(Date correctTime) 
    {
        this.correctTime = correctTime;
    }

    public Date getCorrectTime() 
    {
        return correctTime;
    }
    public void setCreateUserId(String createUserId) 
    {
        this.createUserId = createUserId;
    }

    public String getCreateUserId() 
    {
        return createUserId;
    }
    public void setElectricityType(Integer electricityType) 
    {
        this.electricityType = electricityType;
    }

    public Integer getElectricityType() 
    {
        return electricityType;
    }
    public void setIsSupplierChange(Integer isSupplierChange) 
    {
        this.isSupplierChange = isSupplierChange;
    }

    public Integer getIsSupplierChange() 
    {
        return isSupplierChange;
    }
    public void setTransferToStraight(Long transferToStraight) 
    {
        this.transferToStraight = transferToStraight;
    }

    public Long getTransferToStraight() 
    {
        return transferToStraight;
    }
    public void setLastModifyTime(Date lastModifyTime) 
    {
        this.lastModifyTime = lastModifyTime;
    }

    public Date getLastModifyTime() 
    {
        return lastModifyTime;
    }
    public void setPriceModel(Integer priceModel) 
    {
        this.priceModel = priceModel;
    }

    public Integer getPriceModel() 
    {
        return priceModel;
    }
    public void setLossTypeValue(BigDecimal lossTypeValue) 
    {
        this.lossTypeValue = lossTypeValue;
    }

    public BigDecimal getLossTypeValue() 
    {
        return lossTypeValue;
    }
    public void setLossTypeUnit(Integer lossTypeUnit) 
    {
        this.lossTypeUnit = lossTypeUnit;
    }

    public Integer getLossTypeUnit() 
    {
        return lossTypeUnit;
    }
    public void setTotalClaimAmount(BigDecimal totalClaimAmount) 
    {
        this.totalClaimAmount = totalClaimAmount;
    }

    public BigDecimal getTotalClaimAmount() 
    {
        return totalClaimAmount;
    }
    public void setLastClaimDate(Date lastClaimDate) 
    {
        this.lastClaimDate = lastClaimDate;
    }

    public Date getLastClaimDate() 
    {
        return lastClaimDate;
    }
    public void setTotalPayAmount(BigDecimal totalPayAmount) 
    {
        this.totalPayAmount = totalPayAmount;
    }

    public BigDecimal getTotalPayAmount() 
    {
        return totalPayAmount;
    }
    public void setLastPaymentDate(Date lastPaymentDate) 
    {
        this.lastPaymentDate = lastPaymentDate;
    }

    public Date getLastPaymentDate() 
    {
        return lastPaymentDate;
    }
    public void setTotalContractAmount(BigDecimal totalContractAmount) 
    {
        this.totalContractAmount = totalContractAmount;
    }

    public BigDecimal getTotalContractAmount() 
    {
        return totalContractAmount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("elecontractId", getElecontractId())
            .append("contractId", getContractId())
            .append("supplierId", getSupplierId())
            .append("paymentperiodId", getPaymentperiodId())
            .append("prvId", getPrvId())
            .append("contractsysId", getContractsysId())
            .append("priceType", getPriceType())
            .append("elecontractPrice", getElecontractPrice())
            .append("includePriceTax", getIncludePriceTax())
            .append("flatPrice", getFlatPrice())
            .append("peakPrice", getPeakPrice())
            .append("valleyPrice", getValleyPrice())
            .append("topPrice", getTopPrice())
            .append("supplyMethod", getSupplyMethod())
            .append("buyMethod", getBuyMethod())
            .append("paymentMethod", getPaymentMethod())
            .append("includeTax", getIncludeTax())
            .append("taxRate", getTaxRate())
            .append("isIncludeAll", getIsIncludeAll())
            .append("paySign", getPaySign())
            .append("paySignAccount", getPaySignAccount())
            .append("contractMoney", getContractMoney())
            .append("contractTax", getContractTax())
            .append("contractTotalAmount", getContractTotalAmount())
            .append("contractYearAmount", getContractYearAmount())
            .append("independentMeter", getIndependentMeter())
            .append("cmccRatio", getCmccRatio())
            .append("unicomRatio", getUnicomRatio())
            .append("telcomRatio", getTelcomRatio())
            .append("includeLoss", getIncludeLoss())
            .append("lossType", getLossType())
            .append("paymentUser", getPaymentUser())
            .append("paymentTelphone", getPaymentTelphone())
            .append("elecontractNote", getElecontractNote())
            .append("tag", getTag())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("enterUserId", getEnterUserId())
            .append("correctId", getCorrectId())
            .append("correctTime", getCorrectTime())
            .append("createUserId", getCreateUserId())
            .append("electricityType", getElectricityType())
            .append("isSupplierChange", getIsSupplierChange())
            .append("transferToStraight", getTransferToStraight())
            .append("lastModifyTime", getLastModifyTime())
            .append("priceModel", getPriceModel())
            .append("lossTypeValue", getLossTypeValue())
            .append("lossTypeUnit", getLossTypeUnit())
            .append("totalClaimAmount", getTotalClaimAmount())
            .append("lastClaimDate", getLastClaimDate())
            .append("totalPayAmount", getTotalPayAmount())
            .append("lastPaymentDate", getLastPaymentDate())
            .append("totalContractAmount", getTotalContractAmount())
            .toString();
    }
}
